package com.buss.product.service;

import java.util.List;

import com.buss.core.dic.RecordStatus;
import com.buss.core.exception.ServiceException;
import com.buss.core.persistence.OrderBy;
import com.buss.core.persistence.Paginalbe;
import com.buss.core.persistence.ResultList;
import com.buss.product.model.GoodsCategory;

public interface GoodsCategoryService {
	/**
	 * 新增商品分类信息
	 * @param category
	 */
	public GoodsCategory saveCategory(GoodsCategory category) throws ServiceException;
	
	/***
	 * 修改商品分类信息
	 * @param category
	 */
	public void editCategory(GoodsCategory category);
	
	/**
	 * 保存商品分类对应品牌信息
	 * @param categoryId
	 * @param brandIds
	 */
	public void updateCategoryBrand(Long categoryId,Long[] brandIds);
	
	/**
	 * 保存商品分类对应商品属性分组对应关系
	 * @param categoryId
	 * @param groupIds
	 */
	public void updateCategoryPropGroup(Long categoryId,Long[] groupIds);
	
	/**
	 * 删除指定商品分类信息
	 * @param ids
	 */
	public void removeCategory(Long[] ids);
	
	/**
	 * 获取指定的商品分类信息
	 * @param id
	 * @return
	 */
	public GoodsCategory loadCategory(Long id);
	
	/**
	 * 获取指定的商品分类信息
	 * @param companyId
	 * @param code
	 * @return
	 */
	public GoodsCategory loadCategory(String companyId, String code);
	
	/**
	 * 获取商品分类信息列表	
	 * @param companyId
	 * @param name
	 * @param branchId
	 * @param parentId
	 * @param status
	 * @param propGroupId
	 * @param orderBy
	 * @param page
	 * @return
	 */
	public ResultList<GoodsCategory> queryCategory(String companyId,String branchId,
			Long parentId,String name,
			RecordStatus status,Long propGroupId,
			OrderBy orderBy,Paginalbe page);
	
	/**
	 * 根据上级编码获取所以下级分类信息
	 * @param parentId
	 * @return
	 */
	public List<GoodsCategory> queryCategoryByParentId(String companyId,String branchId,Long parentId);
	
	/**
	 * 根据分类编码获取所有上级分类的信息
	 * @param categoryId
	 * @return
	 */
	public List<GoodsCategory> queryCategoryByChildId(Long categoryId);
}
